#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/types.h>
#include <sys/wait.h>
#include <unistd.h>


int main()
{
  pid_t id=fork();
  if(id==0)
  {
    int cnt=5;
    while(cnt)
    {
      printf("child[%d] is running: cnt is : %d\n",cnt,getpid());
      cnt--;
      sleep(1);
    }
    exit(0);
  }

  int status=0;
  while(1)
  {
    pid_t ret=waitpid(id,&status,WNOHANG);
    if(ret==0)
    {
      printf("father do things\n");
    }
    else if(ret>0)
    {
      printf("father wait: %d.success , status exit code:%d status exit signal: %d\n",ret,WEXITSTATUS(status),WIFEXITED(status));
      break;
    }
    else
    {
      perror("waitpid");
      break;
    }
    sleep(1);
  }
}





//int main()
//{
//  pid_t id=fork();
//  if(id==0)
//  {
//    //child
//    int cnt=5;
//    while(cnt)
//    {
//      printf("child[%d],is running : cnt is : %d\n",cnt,getpid());
//      cnt--;
//      sleep(1);
//    }
//    exit(0);
//  }
//  sleep(10);
//  printf("father wait begin\n");
//  pid_t ret=wait(NULL);
//  if(ret>0)
//  {
//    printf("father wait %d  success\n ",ret);
//  }
//  else
//  {
//    printf("father wait failed\n");
//  }
//  sleep(10);
//
//
//}
//
//
//















//void func()
//{
//  exit(12);
//  printf("i am func()");
//}
//
//int main()
//{
//  func();
//  for(int i=0;i<10;i++)
//  {
//    printf("hello world\n");
//  }
//  func();
//

//  for(int i=0;i<134;i++)
//  {
//    printf("i:%d,  %s\n",i,strerror(i));
//  }



//  printf("hello world");
//  return 123;
//}
